package com.gongzonqiang.service;

import com.github.pagehelper.PageInfo;
import com.gongzonqiang.pojo.Collection;
import com.gongzonqiang.pojo.Notice;
import com.gongzonqiang.pojo.User;
import com.gongzonqiang.povo.CommentVo;
import com.gongzonqiang.povo.NoticeVo;

/**
 * 用户服务
 * @author 肖鹏
 *
 */
public interface UserService {
	
	/**
	 * 根据用户openId获取用户信息
	 * @param openId
	 * @return 
	 * 	youjie
	 */
	User selectById(String openId);
	
	/**
	 * 添加用户
	 * youjie
	 */
	int addUser(User user);
	
	/**
	 * 是否登录
	 * @param user 用户实体
	 * @return 
	 */
	boolean isLogin(User user);
	
	
	/**
	 * 绑定手机号码
	 * @param user 用户实体(要被绑定的手机号码放在该实体中)
	 * @return 0失败 1成功
	 */
	int bindingPhone(User user);
	
	/**
	 * 查看我发布的公告
	 * @param user 用户实体
	 * @Param pageNum 第几页
	 * @Param pageSize 几条数据
	 * @return 公告VO实体集合(分页)
	 */
	PageInfo MyRelease(int pageNum,int pageSize,User user);
	
	/**
	 * 查看我收藏的公告
	 * @param user
	 * @Param pageNum 第几页
	 * @Param pageSize 几条数据 
	 * @return 公告VO实体集合(分页)
	 */
	PageInfo<NoticeVo> MyCollection(int pageNum,int pageSize,User user);
	
	/**
	 * 查看我的评论
	 * @param user 
	 * @Param pageNum 第几页
	 * @Param pageSize 几条数据
	 * @return 评论Vo实体集合(包含基本公告信息,发布公告用户头像和姓名,评论内容和评论时间)(分页)
	 */
	PageInfo<CommentVo> MyComment(int pageNum,int pageSize,User user);
	
	/**
	 * 查看消息通知(我发布的公告被评论了)
	 * @param user
	 * @Param pageNum 第几页
	 * @Param pageSize 几条数据
	 * @return 公告Vo实体集合(包含评论用户基本信息(编号,姓名,头像),基本公告信息)(分页)
	 */
	PageInfo<NoticeVo> messageNotification(int pageNum,int pageSize,User user);
	
	/**
	 * 拉黑用户(禁止其登录,在登录时会判断)
	 * @param openId 用户编号
	 * @return 0失败 1成功
	 */
	int freeze(String openId,int status);
	
	/**
	 * 用户列表(可依据的搜索条件:用户状态,用户昵称)
	 * @param user
	 * @Param pageNum 第几页
	 * @Param pageSize 几条数据 
	 * @return 用户实体集合
	 */
	PageInfo<User> listUser(int pageNum,int pageSize,User user);
	
	/**
	 * 查看用户发布的活动
	 * @param openId 
	 * @Param pageNum 第几页
	 * @Param pageSize 几条数据
	 * @return 公告实体集合
	 */
	PageInfo<Notice> noticeByUser(int pageNum,int pageSize,String openId);
	
	/**
	 * 管理员登录(手机号码,密码)
	 * @param user
	 * @return 用户实体
	 */
	User loginAdmin(User user);
	
	/**
	 * 管理员修改密码(手机号码,密码)
	 * @param user
	 * @return 0失败 1成功
	 */
	int updatePasswordAdmin(User user);
}
